Sắp xếp trộn đệ quy Sắp xếp trộn

Một cách gọi đệ quy của sắp xếp trộn cũng thường được hướng dẫn trong các giáo trình giải thuật.

Để sắp xếp trộn đoạn a [ k 1 . . k 2 ] {\displaystyle a[k_{1}..k_{2}]} của danh sách a [ 1.. n ] {\displaystyle a[1..n]} ta chia đoạn đó thành 2 phần a [ k 1 . . k 3 ] {\displaystyle a[k_{1}..k_{3}]} và a [ k 3 + 1.. k 2 ] {\displaystyle a[k_{3}+1..k_{2}]} ,trong đó k 3 = i n t ( ( k 1 + k 2 ) / 2 ) {\displaystyle k_{3}=int((k_{1}+k_{2})/2)} tiến hành sắp xếp với mỗi phần rồi trộn chúng lại. Lời gọi thủ tục sắp xếp trộn với a [ 1.. n ] {\displaystyle a[1..n]} sẽ cho kết quả là sắp toàn bộ danh sách a [ 1.. n ] {\displaystyle a[1..n]}

Ví dụ: Cho danh sách a = [ 2 , 7 , 6 , 3 , 4 , 5 , 1 ] {\displaystyle a=[2,7,6,3,4,5,1]}

Giải thuật trộn đệ quy chia a thành hai danh sách con và tiến hành 3 bước
Danh sách tráiDanh sách phải
2,7,63,4,5,1
  • Sắp xếp trộn danh sách trái 2,7,6
Quá trình chiaQuá trình trộn
2,7,62,6,7
27,626,7
276276
  • Sắp xếp trộn danh sách phải 3,4,5,1
Quá trình chiaQuá trình trộn
3,4,5,11,3,4,5
3,45,13,41,5
34513451
  • Trộn danh sách trái 2,6,7 với danh sách phải 1,3,4,5
Danh sách tráiDanh sách phảiDanh sách trộn
2,6,71,3,4,51,2,3,4,5,6,7

Liên quan